/* eslint-disable object-curly-newline,prefer-destructuring,import/first */

/*   用于存放业务逻辑   */
import * as utils from '../../../../utils/utils';
import moment from 'moment';
import { message } from 'antd';

// ----------------------------按钮相关功能start---------------------------- //
// -------------------------新增行相关功能start------------------------- //
/**   新增行业务(销售业务)   */
export function doAddRowBusinessSales(addSlaveRow, props) {
  /*   返回值声明   */
  const { masterData, masterShowConfig } = props;
  /*   客户名称为空时不允许增加行   */
  if (utils.isEmptyObject(masterData) || utils.isEmptyStr(masterData.sCustomerId)) {
    const { showName } = masterShowConfig.filter(item => (item.sName === 'sCustomerId'))[0];
    message.warn(`${showName}不能为空!`);
    return {};
  }
  /*   返回值   */
  return addSlaveRow;
}

/**   通过主表税率和税率id变更从表税率及税率id   */
export function changeSlaveTaxRateTaxIdByMaster(masterData, addSlaveRow) {
  addSlaveRow.dTaxRate = getMasterTaxRate(masterData);
  addSlaveRow.sTaxId = getMasterTaxId(masterData);
  return addSlaveRow;
}

/**   获取主表税率   */
export function getMasterTaxRate(masterData) {
  /*   返回值声明   */
  let taxRate = 0;
  /*   主表数据存在病情不是undefined的时候返回主表数据的税率值   */
  if (utils.isNotEmptyObject(masterData) && utils.isNotUndefined(masterData.dTaxRate)) {
    taxRate = masterData.dTaxRate;
  }
  /*   返回值   */
  return taxRate;
}

/**   获取主表税率id   */
export function getMasterTaxId(masterData) {
  /*   返回值声明   */
  let taxId = '';
  /*   主表数据存在病情不是undefined的时候返回主表数据的税率值   */
  if (
    utils.isNotEmptyObject(masterData) &&
    utils.isNotEmptyStr(masterData.sTaxId)) {
    taxId = masterData.sTaxId;
  }
  /*   返回值   */
  return taxId;
}
// -------------------------新增行相关功能end  ------------------------- //
// ----------------------------按钮相关功能end  ---------------------------- //

// ----------------------------toolbar相关功能start---------------------------- //
// -------------------------保存相关功能start------------------------- //
/**   保存验证   */
export function handleSaveValidate(props) {
  /*   待用数据声明   */
  const { slaveData } = props;
  /*   从表信息不能为空   */
  if (utils.isEmptyArr(slaveData)) {
    props.saveError = '请输入从表信息';
  }
  /*   返回值   */
  return props;
}
// -------------------------保存相关功能end  ------------------------- //
// ----------------------------toolbar相关功能start---------------------------- //

// ----------------------------数据修改相关功能start---------------------------- //
// -------------------------主表数据修改start------------------------- //
/**   结算日期计算   */
export function getGeyPayDate(props) {
  /*   待用数据声明   */
  let { masterData } = props;
  const changeDataRow = getMasterDrowDownChangeDataRow(props); /*   下拉行的数据   */
  masterData = { ...masterData, ...changeDataRow, sId: masterData.sId }; /*   把下拉行的数据都赋给主表   */
  const { tCreateDate, tDeliverDate, sGetPayType, iMonth, iDay, iAfterDeliverDay } = masterData; /*   再从主表中取到需要用的数据   */
  const tCreateDateValue = utils.convertObjToMomentDefault(tCreateDate, utils.dateFormatA); /*   格式化日期   */
  const tDeliverDateValue = utils.convertObjToMomentDefault(tDeliverDate, utils.dateFormatA); /*   格式化日期   */
  /*   存在结算类型,那么才做相应的处理   */
  if (utils.isNotEmptyStr(sGetPayType)) {
    /*   待用数据声明   */
    let { masterShowRender } = props;
    masterShowRender = utils.isEmptyArr(masterShowRender) ? [] : masterShowRender;
    let tGetPayDate = '';
    /*   结算方式   */
    if (sGetPayType === 'now') { /*   现结()   */
      tGetPayDate = tCreateDateValue;
    } else if (sGetPayType === 'month') { /*   月结(当前天大于月结天的向后顺延一个月)   */
      const tCreateValue = moment(tCreateDate).set('date', iDay);
      tGetPayDate = moment(tCreateValue).add(iMonth, 'months').format(utils.dateFormatA);
      const tCurrentDay = moment(tCreateDate).get('date'); /* 当前Day */
      if (tCurrentDay <= iDay) {
        tGetPayDate = moment(tGetPayDate).format(utils.dateFormatA);
      } else {
        tGetPayDate = moment(tGetPayDate).add(1, 'months').format(utils.dateFormatA);
      }
    } else if (sGetPayType === 'deliver') { /*   按送货日期来   */
      tGetPayDate = moment(tDeliverDateValue).add(iAfterDeliverDay, 'days').format(utils.dateFormatA);
    }
    /*   数据赋值   */
    masterData.tGetPayDate = tGetPayDate;
    masterShowRender.push('tGetPayDate');
    props = { ...props, masterShowRender, masterData };
  }
  /*   返回值   */
  return props;
}

/**   获取下拉发生改变的那一行数据的值   */
export function getMasterDrowDownChangeDataRow(props) {
  /*   返回值声明   */
  let changeData = {};
  /*   待用数据赋值   */
  const { changeValue, masterSelectAllValue } = props;
  /*   获取下拉字段的sName和对应的值   */
  const sName = Object.keys(changeValue)[0];
  const sId = changeValue[sName];
  /*   获取对应的下拉数据集   */
  const changeListData = masterSelectAllValue[sName];
  /*   下拉数据集存在则获取数据   */
  if (utils.isNotEmptyArr(changeListData)) {
    changeData = changeListData.filter(item => item.sId === sId);
    if (utils.isNotEmptyArr(changeData)) {
      changeData = changeData[0];
    }
  }
  /*   返回值   */
  return changeData;
}
// -------------------------主表数据修改end  ------------------------- //

// -------------------------从表数据修改start------------------------- //
/**   获取下拉发生改变的那一行数据的值   */
export function getSlaveDrowDownChangeDataRow(props) {
  /*   返回值声明   */
  let changeData = {};
  /*   待用数据赋值   */
  const { changeValue, sSlaveId, slaveSelectAllValue } = props;
  /*   获取下拉字段的sName和对应的值   */
  const sName = Object.keys(changeValue)[0];
  const sId = changeValue[sName];
  /*   获取对应的下拉数据集   */
  const changeListData = slaveSelectAllValue[sSlaveId][sName];
  /*   下拉数据集存在则获取数据   */
  if (utils.isNotEmptyArr(changeListData)) {
    changeData = changeListData.filter(item => item.sId === sId);
    if (utils.isNotEmptyArr(changeData)) {
      changeData = changeData[0];
    }
  }
  /*   返回值   */
  return changeData;
}
// -------------------------从表数据修改end  ------------------------- //
// ----------------------------数据修改相关功能end  ---------------------------- //
